Author SHA1 Message Date
dc 206d88c6a9 docs(viewer): correct the full table search row count claim
The row count next to the table name is the capped count, not the total
number of matches. A search that matches more rows than DC_MAXOBS_WEBVIEW
returns the first 500 and reports 500, so the count does not rise above the
cap even when many more rows match.
2026-09-17 11:43:23 +00:00
allan cd47d0e442 Merge pull request 'docs(viewer): document full table search semantics with a screenshot' (#5) from docs/full-table-search into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m18s
Reviewed-on: #5
Reviewed-by: Allan <allan@4gl.io>
2026-09-17 09:49:11 +00:00
dc 85f200c724 docs(viewer): correct the character search example to match the code
The example claimed `smith` finds `Smithson`, which only holds for a case
insensitive match. The search is a case sensitive CONTAINS match - DC passes
the search value straight to %mp_searchdata, which uses the SAS `?` operator -
so `smith` finds `Goldsmith` (a lowercase substring) and not `Smithson`.
2026-09-16 23:42:37 +00:00
dc 4a53499055 docs(viewer): show the matching column in the full table search screenshot
The screenshot showed the siphonophore search returning 3 rows, but the
NOTES column - the only column the value appears in - was clipped off the
right edge, so the image did not show why those rows matched.

Re-captured at 1920x900 (all nine columns on screen, no clipping) from the
mocked instance, with the capture gated on an assertion that the matched
cell is inside the grid viewport.
2026-09-16 23:38:14 +00:00
dc d95f440c4f docs(viewer): document full table search semantics with a screenshot
The "Full Table Search" section said only that a search box exists. It now
states the behaviour that users actually hit:

- the search covers every column at once, character columns by case sensitive
  CONTAINS and numeric columns by exact match
- the Numeric toggle switches to exact numeric matching
- an applied filter scopes the search
- results are capped by DC_MAXOBS_WEBVIEW (linked to the options page), and the
  row count next to the table name reports the match count
- a search with no matches shows the "No data found with given conditions"
  panel

Adds a screenshot of the search in action (docs/img/full-table-search.png),
captured from a running instance via the Cypress suite in the dc repo.
2026-09-16 00:52:12 +00:00
hermes 94b27628aa Merge pull request 'docs: remove customer reference and conversion-function warning from timezone FAQ' (#4) from fix/timezone-docs-redact into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m12s
2026-09-04 11:34:05 +00:00
dc-bot 5236b74fee docs: remove customer reference and conversion-function warning from timezone FAQ 2026-09-04 11:33:49 +00:00
hermes 06df7e6e23 Merge pull request 'docs: remove customer-identifying details from timezone troubleshooting section' (#3) from fix/timezone-docs-redact into main
Publish to docs.datacontroller.io / Deploy docs (push) Failing after 13m6s
2026-09-04 10:21:03 +00:00
dc-bot 7e49033aae docs: remove customer-identifying details from timezone troubleshooting section 2026-09-04 10:20:08 +00:00
dc-bot 76bdc90ed8 docs: add troubleshooting section for timestamps displayed in UTC (compute context TIMEZONE)
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 17m7s
2026-09-04 10:00:58 +00:00
allan 6782b77e69 Merge pull request 'docs: document v7.13.0 features' (#2) from docs/v7.13-features into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m26s
Reviewed-on: #2
2026-09-03 20:11:49 +00:00
3 changed files with 38 additions and 0 deletions
+28
View File
@@ -108,6 +108,34 @@ This can happen if you enter the wrong `serverName` when deploying the SAS progr
The error may also be thrown due to an encoding issue - changing to a UTF-8 server has helped at least one customer. The error may also be thrown due to an encoding issue - changing to a UTF-8 server has helped at least one customer.
## Displayed timestamps are in UTC (or the wrong timezone)
Data Controller records timestamps (such as the SUBMITTED column on the Submitted screen, and the audit history) using the SAS session clock, via the `datetime()` function. That function returns the time of the operating system, adjusted by the [TIMEZONE= system option](https://documentation.sas.com/doc/en/pgmsascdc/default/lesysoptsref/p15siqs0s00e50n1wuuvygzkr14r.htm) if it is set. The value is then displayed in the frontend exactly as stored, without conversion.
On Viya, the SAS compute sessions that run Data Controller jobs are started inside Kubernetes containers whose clock is UTC by default, and which inherit no timezone from the host machine. If the TIMEZONE= option is not set for the compute context used by Data Controller, every timestamp DC records and displays is UTC. Other SAS products can appear unaffected because clients such as SAS Studio create their own compute sessions and pass the browser timezone / locale, whereas Data Controller submits jobs to its own shared compute context, which gets the raw container clock.
To confirm the current state, run the following in a SAS session under the Data Controller compute context (or check the DC job log, where `_DEBUG` output shows the same values):
```sas
proc options option=timezone;
run;
%put &=SYSTIMEZONEIDENT &=SYSTIMEZONEOFFSET;
```
If TIMEZONE is blank (and SYSTIMEZONEOFFSET is 0), the session is on UTC. To fix it, ask your Viya administrator to set the timezone for the compute context used by Data Controller (in SAS Environment Manager, edit the context's Autoexec, or set the context's SAS options):
```sas
options timezone='Europe/Berlin';
```
Then recycle any existing compute sessions - hot sessions keep the old setting until they terminate.
!!! note
Use a region/area time zone ID such as `Europe/Berlin` rather than a fixed offset such as `GMT+2`. Fixed offsets do not follow daylight saving time, so the display would be 1 hour off in winter (CET = UTC+1).
!!! note
Changing the timezone affects new timestamps only. Previously recorded submissions keep the UTC values that were stored when they were created.
## Determining Application Version ## Determining Application Version
The app version is bundled into the frontend during the release, and is visible by clicking your username in the top right. The app version is bundled into the frontend during the release, and is visible by clicking your username in the top right.
+10
View File
@@ -16,6 +16,16 @@ Row and Column level security can also be applied in VIEW mode, as can additiona
A single search box can be used to make a full table search on any character or numeric value, using this [macro](https://core.sasjs.io/mp__searchdata_8sas.html). A single search box can be used to make a full table search on any character or numeric value, using this [macro](https://core.sasjs.io/mp__searchdata_8sas.html).
The search covers **every** column of the table at once, so you do not need to know which column holds the value you are looking for:
- **Character search** (the default) is a case sensitive CONTAINS match against every character column, so `Smith` finds `Smithson` and `smith` finds `Goldsmith`, but `smith` will not find `Smithson`.
- **Numeric search** (tick the Numeric box) is an exact match against every numeric column, so `42` will not find `420` or `4210`.
- If a filter is applied, the search runs within the filtered rows rather than the whole table.
- The result set is capped by the [`DC_MAXOBS_WEBVIEW`](/dcc-options/#dc_maxobs_webview) option (500 rows by default). A search that matches more rows than the cap returns the first 500, and the row count shown next to the table name is that capped count, not the total number of matches.
- A search that matches nothing shows a "No data found with given conditions" panel rather than an empty grid.
![Full table search](img/full-table-search.png)
<iframe width="560" height="315" src="https://www.youtube.com/embed/i27w-xq85WQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> <iframe width="560" height="315" src="https://www.youtube.com/embed/i27w-xq85WQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
## Options ## Options
Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB