This change exposes the underlying table library API for setting
help icon for table headers, via column instance getter/setter.
Support added for rendering said icons in system reports.
In previous versions of PHPUnit, the `assertEqualsCanonicalizing()`
method compared values only, ignoring the keys entirely. Since PHPUnit
10 the method now checks keys where they are non-numeric.
To solve this we call `array_values()`.
It's possible the first returned field contains a null value, while
subsequent fields may be non-null - in this case we should still
populate the fullname in column callback.
This allows each class to define the type of data that they return,
regardless of the type of column to which they are applied. This is the
pre-cursor to work on graphing and filtering of aggregated data.
E.g. a text field that is aggregated with "count" is returning numeric
data rather than text.
This change introduces updates to the existing aggregation API, to
allow types to define whether to group by fields of a column to which
the aggregation is applied.
The new date aggregation utilises this, to allow for creation of time
series reports, e.g. report data grouped by dates.
Co-authored-by: Daniel Neis Araujo <danielneis@gmail.com>
- Add .visually-hidden to the Boostratp 5 bridge SCSS file
- Replace .sr-only occurrences with .visually-hidden
- Replace .dropzone-sr-only-focusable with .dropzone-visually-hidden-focusable
for consistency
This is extending work started in 8f32e623 that removed duplicate
fields when sorting user fullname columns (to ensure compatibility
across supported DBs).
We must now refer to these sorted fields by their alias in order to
ensure they continue working when processed from the report table.
Co-authored-by: David Carrillo <davidmc@moodle.com>
Where the select filter contains upto two items (making it a binary
choice), then we can simplify the filter form elements to always
assume: "Equal to [ Option 1 | Option 2 ]".
Use the new "counted recordset" DML API from 42664ee49a to obtain
the raw table data for reports. For those databases with defined
support for count window functions, this should give a performance
benefit by combining the count and main query into one request.
Ensure that provided columns and filters for each use appropriate
checks to determine their availability (based on user permissions,
etc), rather than conditionally adding them to the entity.
When an entity no longer uses a table (due to re-factoring, etc), we
should avoid breaking third-party reports by deprecating the table
name from the entity instead of straight removal. In doing so, we
can then emit debugging to inform developers.