A filter clause is shown in a panel above the grid. The panel was clamped to a single line - in the editor with an ellipsis, and in the viewer by letting the clause run the full width of the table - so a long or complex filter could not be read on screen. The panel is now collapsed to one line and carries a chevron that expands it to show the whole clause, wrapped, and collapses it again. The chevron is rendered only when the clause does not fit the collapsed line, so a short filter looks exactly as it did before. Whether it fits is measured from the DOM rather than guessed from the length of the text, since it depends on the rendered width; the measurement is deferred out of the change-detection cycle, and re-run when the clause, the available width, or the state changes. This replaces the editor's hover-only reveal with a real control, which is a button carrying aria-expanded and an accessible label, and gives the viewer the same affordance. Both panels share the styling, which was previously duplicated between the two component blocks. Tested with `client/cypress/e2e/filter-panel.cy.ts`, at a laptop-sized viewport, covering the three states: 1. no filter - the panel is not rendered 2. a short filter - shown in full, with no chevron 3. a long filter (an IN over every value of a free-text column, 646 characters) - collapsed with a chevron, expands to the whole clause over several lines, and collapses again 4. the editor panel behaves the same way for the same clause
Data Controller for SAS
Control your manual data modifications!
Alternatives to Data Controller include:
- 💾 Developing / testing / deploying / scheduling overnight batch jobs to load files from shared drives
- 🔒 Opening (and locking) datasets in Enterprise Guide or SAS® Table Viewer to perform direct updates
- ❓ Asking a #DBA to run validated code after a change management process
- 🌐 Building & maintaining your own custom web application
- 🏃 Running #SAS or #SQL updates in production
Problems with the above include:
- Legacy 'black box' solutions with little to no testing, documentation or support
- End users requiring direct write access to critical data sources in production
- Upload routines that must be manually modified when the data model changes
- Breaches due to unnecessary parties having access to the data
- Inability to trace who made a change, when, and why
- Reliance on key individuals to perform updates
- Building bespoke ETL for every new data source
- High risk of manual error / data corruption
Data Controller for SAS® solves all these issues in a simple-to-install, user-friendly, secure, documented, battle-tested web application. Available on Viya, SAS 9 EBI, and SASjs Server.
An individual Viya deploy can be done in just 2 lines of #SAS code!
filename dc url "https://git.datacontroller.io/dc/dc/releases/download/latest/viya.sas";
%inc dc;
For a multi-user deploy, using a shared system account, please see deploy docs.
For further information:
- Main site: https://datacontroller.io
- Docs: https://docs.datacontroller.io
- Code: https://code.datacontroller.io
For support, contact support@4gl.io or reach out on Matrix!
Development
Lighthouse CI
This project includes automated Lighthouse performance and accessibility checks that run on pull requests. The checks ensure:
- Accessibility Score: Minimum 1.0 (100%) median score across all tested pages
The Lighthouse CI workflow:
- Sets up the development environment with SASjs server and mocked services
- Builds and serves the Angular frontend
- Installs Chrome and runs
lhci autorun(Lighthouse CI) against key pages - Uploads results as artifacts for review
To run Lighthouse checks locally:
cd client
npm install
npm run lighthouse
Configuration is in client/lighthouserc.js (URL list, desktop preset, Chrome flags, assertions).