Commit Graph

4 Commits

Author SHA1 Message Date
oleibman 9565757138 Reorganize Samples and Improve Downloader Class
A follow-on activity to PR #5061. That PR added scrollbars to the dropdown lists when samples were run in a browser. Earlier changes had broken up a number of categories into multiple entries because the dropdown lists were too long and wound up truncated. With the scrollbars, it makes sense to re-consolidate many of those lists, such as ComplexNumbers, which are all essentially the same test as each other. Some break-ups are retained (e.g. Basic/1/2/3/4/5) because they differ substantially from sample to sample; that's kind of an arbitrary decision, but it will have to do for now. I also renamed some of the members so that like members sort together when listing the directory (e.g. all pivot table samples now start with `pvt`). The sample code is mostly unchanged; only the directory and/or member names are changed.

The download samples were moved to their own new directory, and now represent a complete set of all the write formats that we permit. Studying their code, an improvement for `Helper\Downloader` became evident. It had been used merely to copy an existing file to be downloaded. However, by changing the first parameter of `download` to be either the name of the file directory (the existing usage) *or* a `Writer` object poised to issue `save`, you can use it to download your spreadsheet without having to worry about the headers which the browser requires. It then becomes generally useful beyond being used in samples:
```php
$writer = new WriterType($spreadsheet);
$downloader = new Downloader($writer, 'suggestedFileName.xlsx');
$downloader->download();
```
2026-10-22 13:22:48 -07:00
saifulislamferoz 97b895ecd8 Add sample for pivot field group item counts
Demonstrates the three ways a pivot field's item count is derived: a
fractional numeric range, a date grouping, and an ungrouped field taking
its items from the distinct source values.

The fractional interval (0..1 by 0.1) is the case worth showing, since
it is the one where computing bucket boundaries by index rather than by
repeated addition matters: repeated addition drifts past the last
boundary and emits a spurious zero-width "1-1" bucket, which leaves the
pivot field and cache item counts disagreeing.

SampleTest discovers and executes samples automatically, so this runs
as part of the suite.
2026-08-28 10:10:13 +06:00
saifulislamferoz 7d7f5061ae Apply php-cs-fixer style fixes to pivot table files
Shorten @see references to unqualified class names and drop a stray blank
line after the sample header docblock, matching the project's php-cs-fixer
and phpcs rules.
2026-08-03 11:52:58 +06:00
saifulislamferoz 6afe310f8a Add PivotTable samples
Adds runnable samples under samples/PivotTable demonstrating the pivot table
feature, discovered automatically by the sample browser:

- 01_Create_PivotTable: build a basic pivot (row/column/value fields) from a
  source range and save it as Xlsx.
- 02_PivotTable_Page_Filter: add a page (report filter) field.
- 03_PivotTable_Grouping: group a numeric field into ranges and a date field
  by quarter.
- 04_Read_PivotTable: write a pivot, load it back, and inspect the pivot table
  object model (source, row/column/page fields, value aggregation).

Directory is named PivotTable to match the PascalCase convention used by the
other sample categories (Table, Chart, ...).
2026-08-03 11:52:58 +06:00