Commit Graph
543 Commits
Author SHA1 Message Date
allan 428e8e7fa1 Merge pull request 'docs(va): in-report screenshots for the mapping and the banner' (#30) from docs/va-in-report-images into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m4s
Reviewed-on: #30
2026-10-29 14:38:26 +00:00
dc c7bbdee3c6 docs(va): in-report screenshots for the mapping and the banner
Both images on the embed page were still captured from a local sandbox with the
editor as the top-level document, so neither showed the report around it.

- va-parmap-filtered.png: the report viewer, prompt DROPDOWN_TAB1 (relabelled on
  the report, not matching any column) and SOME_DATE, with
  FILTER : ( ( SOME_DROPDOWN = 'Option 1' AND SOME_DATE = '01JUL1960'd ) ) over
  21 rows - the mapped parameter filtering a column that is not its name
- va-parmap-banner.png: the same object with a malformed entry
  (va_parmap=SOME_DATE, no hyphen), showing the warning banner over a populated,
  filtered grid

The caption for the mapping now says the date parameter beside it is
name-matched, which is what the picture shows.

va-parmap-transform.png is removed rather than replaced: the deployment used for
these captures predates the ADD/RANGE work, so there is no honest in-report
picture of a date anchor to take, and a sandbox capture would be the one image on
the page without the report around it. The section keeps the syntax, the anchors
and the examples table.
2026-10-29 14:25:32 +00:00
dc b20c3f3507 docs(va): filter shot with rows to see, and no wrapperless crop
Captured from the report viewer at 1920x1100: two prompts (a value list and a
date), 21 rows returned by
FILTER : ( ( SOME_DROPDOWN = 'Option 1' AND SOME_DATE = '01JUL1960'd ) ).

- drops the header/FILTER crop, which had no VA chrome, and the sentence it
  illustrated
- drops the "single row it matches" wording, which no longer describes the
  picture
- documents the date clause as a code block instead of a second image
2026-10-29 14:05:23 +00:00
allan 86eab571c0 Merge pull request 'docs(va): two-parameter report shot with a date literal' (#29) from docs/va-report-screenshots into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m6s
Reviewed-on: #29
2026-10-29 13:26:13 +00:00
dc f803656936 docs(va): two-parameter report shot with a date literal
Replaces the three-parameter screenshot with a two-parameter one - a value
list and a date - and adds a zoomed crop of the DC header and FILTER line.

The date parameter arrives as a display date and is rendered as a SAS date
literal ('12FEB1960'd), the same as a date filter built inside Data
Controller. That is worth showing because VA's own prompt containers in the
report header show only the parameter label: the FILTER line is where the
selected values are legible.
2026-10-29 13:14:15 +00:00
allan bd736bc91c Merge pull request 'docs(va): show Data Controller inside a real VA report' (#28) from docs/va-report-screenshots into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m6s
Reviewed-on: #28
2026-10-29 12:59:06 +00:00
dc 5d9a133261 docs(va): show Data Controller inside a real VA report
Adds the two screenshots the embed page was missing, both captured from a
Viya deployment with Data Controller embedded as a data-driven content
object:

- three report parameters (SOME_CHAR, SOME_DROPDOWN, SOME_NUM) reaching one
  object, with the combined FILTER line and the single matching row in the
  editor
- the object's Options pane, showing the URL as a Web Content property
  rather than a data source

Also documents two things that make an embedded object look broken when the
deployment is fine: the URL is an object property and the object needs no
data assigned, and an unlicensed / not yet accepted deployment shows its
licensing screen inside the object.  The debugging section now says the
parameter label in the postMessage payload is the key va_parmap matches.
2026-10-29 12:52:26 +00:00
allan 6af8d77d80 Merge pull request 'docs(va): move the embed page to /visual-analytics, redirect the old path' (#27) from docs/visualanalytics into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m22s
Reviewed-on: #27
2026-10-29 10:36:01 +00:00
dc 8839ebd8ce docs(va): use /visual-analytics/ for the embed page
The route is hyphenated like the other multi-word docs paths (dcc-*, pre-edit-hook).
The page has not been published under /visualanalytics/, so only the embed-va
redirect map needs to point at the final path.
2026-10-29 10:35:44 +00:00
dc 3435c17c26 docs(va): move the embed page to /visualanalytics
- rename docs/embed-va.md -> docs/visualanalytics.md, so the page is served
  at /visualanalytics/
- redirect the old /embed-va/ path to the new one
- point the three inbound links (index, filter, deploy-viya) at the new path
- fill in og_title and og_image so link previews carry the page title and a
  card image instead of the site defaults
- the object's author often has elevated permissions, not usually an admin
2026-10-29 10:29:07 +00:00
allan 1587530d9c Merge pull request 'docs(embed): document va_parmap and the Filter button per embed mode' (#26) from docs/va-param-map into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m23s
Reviewed-on: #26
2026-10-28 17:56:05 +00:00
dc 6af7692f97 docs(embed): review pass before the release
- the link to va-messaging.service.ts opened with a backtick and closed with a
  quote, so it rendered as broken text
- the URL example was a plain URL wrapped in backticks inside a fenced block,
  which shows the backticks; it is a text fence with the bare URL now
- restored the space the "updated- all from inside the same report" sentence lost
- closed the sentence about brush columns, and spelled out "primary key columns"
- two causes the banner reports were missing from the table: an entry with no
  parameter before the "-", and a parameter mapped to two columns (the first
  entry wins). Both come from parseVaParmap, so the table now covers every
  message the banner can carry.

Checked against the merged code on release/7.20 (00df87f): the embed values and
their effects, the split at the last hyphen, the case-insensitive label match,
the plain-SAS-name rule, the anchor and period names, and the banner wording.
Tables are consistent, fences balanced, page is ASCII only, and both cross-links
(/filter/ and /developer-guide/browser-variables/) resolve.
2026-10-28 17:14:27 +00:00
dc 6367ed2f43 docs(embed): the object runs as the viewer, who must be a DC user
Found by testing a report against a freshly configured instance: the DC
object showed its login card inside the report because the viewer's SAS
identity was not registered yet, which reads as a broken embed rather than
a permissions problem.
2026-10-28 15:44:29 +00:00
dc 91c49a27c5 docs(embed): a configuration walkthrough for the VA Report Designer
Replaces the two-sentence section with the steps a report author needs:
where the URL goes, that the parameter has to be bound into the object's
query or VA never sends it, and how to tell a working mapping from a broken
one when the report runs. Also drops the note about intnx argument names,
which was explaining a decision rather than the behaviour.
2026-10-28 13:07:22 +00:00
dc 24e088d663 docs(embed): show the mapping, the warning banner and a date anchor
Screenshots taken against the demo estate with a licence key installed, so
no evaluation banner appears. The banner section now tabulates every cause
the editor reports, because the reader is the report author looking at the
Data Controller object and the URL is the only thing they can edit.
2026-10-28 12:59:22 +00:00
dc d4e7c26f13 docs(embed): the mapping key matches the parameter label only 2026-10-28 12:32:42 +00:00
dc 4623bfa5e2 docs(embed): document va_parmap date anchors 2026-10-28 11:53:23 +00:00
dc 73222aa9bd docs(embed): drop the jargon, name the header and navigation instead 2026-10-28 10:52:17 +00:00
dc 17bdecff89 docs(embed): describe everything va mode changes, not just the Filter button 2026-10-28 10:51:37 +00:00
dc 75a97e6300 docs(embed): say why the Filter button is hidden in va mode 2026-10-28 10:47:46 +00:00
dc b88002a752 docs(embed): document va_parmap, the mapping warnings and the Filter button per mode
The SAS Visual Analytics Embed page now covers mapping report parameters to
DC columns from the URL, which the name-based match cannot do for two report
objects filtering the same column from differently-named parameters.

- new "Mapping parameters to columns" section: the `va_parmap` grammar, the
  lower-case example, what overrides what, and the rules that matter to a
  report author (last-hyphen split, label-then-name key matching, one parameter
  to one column, no fallback to the name match)
- the warning banner is documented next to it, including that a parameter is
  ignored rather than filtered on the wrong column
- the `?embed=` table now shows the Filter button per mode, so it is explicit
  that `embed=true` keeps Data Controller's own filter builder while `embed=va`
  hands filtering to the report
2026-10-28 10:47:14 +00:00
allan c5b5acbcbc Merge pull request 'ci(publish): deploy the docs site with surfer 7 and an app password' (#25) from ci/surfer-app-password into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m19s
Reviewed-on: #25
2026-10-28 00:42:12 +00:00
dc 982cf5b28e ci(publish): deploy the docs site with surfer 7 and an app password
The publish job installed cloudron-surfer 6.4.1 and uploaded with a token; the
current major takes a Cloudron username plus an app password instead.  Pin
@cloudron/surfer 7.2.0, user allan, password from SURFER_PASSWORD.

`deploy` rather than `put`: it swaps the site atomically, so a failed upload
leaves the current site serving, and it records the ref and commit in the site's
deploy history.  The docs are a named site (`docs`) on its own alias domain, so
both are passed.

Also adds workflow_dispatch, so a deploy can be run by hand.
2026-10-28 00:40:41 +00:00
allan 41a8961905 Merge pull request 'docs(7.19): publish derived variables - banners off, nav titles clean, roadmap entry' (#24) from docs/7.19-release into main
Publish to docs.datacontroller.io / Deploy docs (push) Failing after 1m33s
Reviewed-on: #24
Reviewed-by: Allan <allan@4gl.io>
2026-10-28 00:23:50 +00:00
dc 9fd1d1ef65 docs(derived): the stills are framed for the page, not for the browser
The 1920x900 captures left two thirds of each image as empty grid canvas, and
shrank the UI to about a third of its CSS size once the page rendered them at
content width - unreadable on a tablet.  Re-taken at 1024 CSS px and captured at
2x device pixels, so they stay crisp on a retina screen, and clipped to just
below the data rows, so the image is mostly table.

The configuration still stays in the viewer: the EDIT screen adds a
current-version filter bar whose text is a macro expression.
2026-10-28 00:15:38 +00:00
dc 76b8c5fb07 docs(derived): publish the page, and the images for the computed-column styling
The screenshots were taken on the mocked estate, before setvars began marking
computed columns with an fx badge, a tinted header and a left edge where the
derived block starts.  They are re-taken against a real SAS backend, so the
images show what ships, and the page describes the marking.

The draft banner comes off both pages, the (draft) suffix off both nav entries,
and the roadmap gains its Delivered Features entry - all held until the release
lands.
2026-10-27 23:50:22 +00:00
allan ca62bb391c Merge pull request 'docs(options): the EDIT limits truncate the grid and warn' (#22) from docs/editor-limit-warning into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m21s
Reviewed-on: #22
2026-10-26 11:59:54 +00:00
dc 856e57173f docs(overview): the EDIT limits truncate, and the viewer default is 2000 not 500
Review 431: dc-overview.md still said "Up to 500 rows can be edited (in the web
editor) at one time" - the wrong number (DC_MAXOBS_WEBEDIT ships at 250) and, once
dc/dc#352 lands, the wrong behaviour (an over-limit selection is served truncated
with a warning, not refused or capped at a count). It now names both limits,
whichever binds first, and links to the options that set them.

Sweeping for the same stale figure turned up dcu-tableviewer.md, which says 500
twice and uses 500 in its worked example of the row count above the grid.
DC_MAXOBS_WEBVIEW has been 2000 since 20261003_row_and_cell_limits.sas (the
migration records 500 -> 2000), and mpe_makedata seeds 2000, so those three
places were two releases out of date. Fixed here, and flagged in the PR reply as
VIEW rather than EDIT in case it belongs in its own change.

Checked: no "500 rows" or stale abort wording left in docs/, and the two anchors
the overview now links to (dc_maxobs_webedit, dc_maxcells_webedit) exist on the
published options page.
2026-10-26 11:57:21 +00:00
allan c29c955e1a Merge pull request 'docs(7.19): the RLS restriction on derived variables, and the startup Show log button' (#23) from docs/7.19-readiness into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m24s
Reviewed-on: #23
2026-10-26 11:53:53 +00:00
dc c7626b2797 docs(developer): a page for the browser variables, and links from where they are used
browser_info and browser_url_vars were only described inside the troubleshooting
page, under Support Diagnostics. That is the right place to find them if you
already know they exist and are looking for a log line; it is not where anyone
looks when writing a hook, which is what they are mostly for.

The new Developer Guide page carries the whole subject: which services receive
the two tables, the column lists, the debug values per platform and the MPEINIT
log lines, reading them from a hook with the exist() guard, and the reminder that
they are client-supplied and so diagnostics rather than a security boundary.

Troubleshooting keeps three stub headings - browser_info, browser_url_vars,
reading-them-from-a-hook - pointing at the page, so the anchors that are already
published keep resolving, and the detail is not maintained twice.

Linked from the three places a hook author actually starts: the HOOK Scripts
section of the MPE_TABLES page, the pre-edit hook guide (where the editor's
inputs are listed), the two-rule-sets guide (post-edit hook), and the VA embed
page, where embed=va is exactly the kind of thing a hook wants to branch on.
2026-10-26 11:42:35 +00:00
dc f08c2dff0e docs(derived): the label rule - any text, one line, 256 characters
VAR_LABEL is free text in any script and the quotes are escaped when the
statement is built, but it is a column label: control characters, line breaks and
over 256 characters are refused, the last of those because the engine would cut
the value down silently.
2026-10-26 09:53:55 +00:00
dc de47b25e11 docs(7.19): the RLS restriction on derived variables, and the startup Show log button
Two gaps found reviewing the pages against the code that is shipping:

- A derived variable cannot be named by an active row level security rule of
  any scope - mpe_derived_postedit.sas rejects it, because rules are validated
  against the physical table where a derived column does not exist. Neither the
  derived variables page nor row-level-security.md said so.

- The startup failure modal's Show log button (#356, in this release) was not
  documented anywhere. Added to troubleshooting, with why the browser request
  is what gets the log on Viya.
2026-10-26 08:44:27 +00:00
dc 561e92e090 docs(developer-guide): name both EDIT caps in the hook page
The truncation is whichever of DC_MAXOBS_WEBEDIT and DC_MAXCELLS_WEBEDIT
binds first, and for a wide table it is the cell cap - floor(cells/columns)
rows, potentially far below the row limit.  The hook page named only the row
cap and quoted its 250 default, so a hook author would check the row count
alone.  Same correction in the two-rule-sets page.
2026-10-22 19:27:51 +00:00
dc 971b007606 docs(options): the EDIT limits truncate the grid and warn
getdata no longer refuses a selection over DC_MAXOBS_WEBEDIT or
DC_MAXCELLS_WEBEDIT - it serves the rows within the limit and flags the
truncation against the table name.  Update the option reference and the two
developer-guide pages that claimed the edit screen stops with "Table is too
big".  The hook page also carried the old 500 row default.
2026-10-22 16:40:48 +00:00
allan 05daf64ba6 Merge pull request 'docs(config): derived variables in the EDIT screen' (#21) from docs/derived-variables into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 2m20s
Reviewed-on: #21
Reviewed-by: Allan <allan@4gl.io>
2026-10-21 22:26:31 +00:00
dc 2076eddd1b docs(derived): say circular references rather than a cycle 2026-10-21 22:25:50 +00:00
dc 94bf510010 docs(derived): shorten the dependency rule 2026-10-21 22:24:55 +00:00
dc d6065826fb docs(derived): tighten the collision rule 2026-10-21 22:24:05 +00:00
dc e9d48594d7 docs(derived): shorten the collision rule to the rule itself 2026-10-21 22:22:24 +00:00
dc 64c3fb51aa docs(derived): correct the collision rule
TX_FROM, TX_TO and PROCESSED_DTTM are the default names of the metadata
columns rather than reserved names - they are physical columns, refused by the
collision check whatever MPE_TABLES calls them.  The only name refused outright
is the delete marker.  The code now matches: the hard-coded list is gone.
2026-10-21 22:20:04 +00:00
dc 3e4e741f75 docs(derived): drop the retired 'defined earlier' wording
There is no earlier: dependencies are declared in VAR_DEPS and checked in both
directions, so the rejection is an undeclared reference. Both sentences now say
so.
2026-10-21 22:15:07 +00:00
dc c25686c77b docs(derived): mark the page as draft so it can merge before the release
A warning banner on both pages, and '(draft)' in the navigation title, so a
reader is not surprised when the feature is not in their installed version.
Remove both when the release carrying derived variables goes out.

mkdocs build passes; the banner and all four images render.
2026-10-21 22:13:56 +00:00
dc 57edfe5478 docs(derived): include the MPE_DERIVED configuration, recapture at full page
The screenshots now show the whole page rather than a cropped viewport, and the
configuration table is included so the three variables in the grid can be
traced to the three rows that define them.
2026-10-21 15:10:17 +00:00
dc a70daf1789 docs(derived): show the feature, and why it needs a view
Three screenshots from the EDIT screen: the derived columns in the grid, a
filter on a character derived column, and a filter on a numeric one.  Plus a
short 'how it works' explaining that the statements go into a DATA step view
because a WHERE cannot see a variable created in the same step.
2026-10-21 14:36:51 +00:00
dc ac48b91bf4 docs(config): optional VAR_LABEL 2026-10-21 08:14:55 +00:00
dc 617007bbbd revert(config): a derived variable may not reuse a column name 2026-10-20 23:00:13 +00:00
dc d96453ad42 docs(config): a derived variable may shadow a physical column 2026-10-20 22:25:21 +00:00
dc cddf39e58c docs(config): VAR_DEPS 2026-10-20 18:33:30 +00:00
dc 710463ce06 docs(config): VAR_DEPENDENCIES replaces VAR_ORDER
Each row lists every input the expression uses, physical columns and derived
variables alike.  No sequence number to maintain; statements are emitted in
dependency order and a cycle is rejected.
2026-10-20 16:51:13 +00:00
dc 926299f2ee docs(config): the label is <VAR_NM>=<expression> 2026-10-20 11:52:03 +00:00