woocommerce/plugins/woocommerce-admin/client/analytics/report
Gan Eng Chin 48f479fd67
Rename and sort filter options in "Add a filter" in Analytics (#46955)
* Rename filter options in Orders Analytics.

* Sort filter options in labels in Orders Analytics.

* Change filter labels to singular.

* Wider label column to accommodate label change.

* Rename filter options in Variations Analytics.

* Change filter options to Attribute, Category and Product in Variations Analytics.

* Revert "Change filter options to Attribute, Category and Product in Variations Analytics."

This reverts commit b3ca5d5807.

* Change "Add a Filter" to "Add a filter".

* Add changelog.

* Add changelog.

* Refactor getAvailableFilterKeys and getAvailableFilters into one function.

* Add code comment and remove unneeded code.

* Code refactor getAvailableFilters.

This is done by starting from allFilterKeys, and filtering with allowMultiple or not yet active.

With this, we don't need to have `inactiveFilterKeys` and "Ensure filters that allow multiples are always present."

* Fix tests and lint issues.

* Simplify code with Object.entries.
2024-05-02 18:34:17 +08:00
..
categories fix: fixed all instances of translator lint rule violations (#41450) 2023-11-16 19:15:11 +08:00
coupons fix: fixed all instances of translator lint rule violations (#41450) 2023-11-16 19:15:11 +08:00
customers Update AdvancedFilters to use createInterpolateElement instead of interpolateComponents (#37967) 2023-04-26 06:58:14 -04:00
downloads Update AdvancedFilters to use createInterpolateElement instead of interpolateComponents (#37967) 2023-04-26 06:58:14 -04:00
orders Rename and sort filter options in "Add a filter" in Analytics (#46955) 2024-05-02 18:34:17 +08:00
products fix: fixed all instances of translator lint rule violations (#41450) 2023-11-16 19:15:11 +08:00
revenue Fix Layout Controller forwarding arrays from the URL query string. (#38593) 2023-06-05 04:55:20 -03:00
stock Update AdvancedFilters to use createInterpolateElement instead of interpolateComponents (#37967) 2023-04-26 06:58:14 -04:00
taxes fix: fixed all instances of translator lint rule violations (#41450) 2023-11-16 19:15:11 +08:00
variations Rename and sort filter options in "Add a filter" in Analytics (#46955) 2024-05-02 18:34:17 +08:00
README.md Fix/37502: Correct spelling errors. (#37887) 2023-05-08 15:55:09 +08:00
get-reports.js Codemod to change i18n text domain from 'woocommerce-admin' to 'woocommerce' in WCA Client 2022-04-01 11:41:32 +08:00
index.js Moving currencyContext to currency package and updating references (#36959) 2023-02-28 08:55:49 -08:00
style.scss Update table component to use wp card (https://github.com/woocommerce/woocommerce-admin/pull/5904) 2021-01-04 15:56:57 -05:00

README.md

Reports

The core reports offered by WooCommerce live in this folder. The Header is added automatically by the parent Report component, each individual component should contain just the report contents.

Extending Reports

New reports can be added by third-parties without altering woocommerce-admin. First, a page will need to be registered in PHP to populate menu items.

function register_page( $report_pages ) {
	$report_pages[] = array(
		'id'     => 'extension-example',
		'title'  => __( 'Example', 'plugin-domain' ),
		'parent' => 'woocommerce-analytics',
		'path'   => '/analytics/example',
	);
	return $report_pages;
}

add_filter( 'woocommerce_analytics_report_menu_items', 'register_page' );

Each menu item is defined by an array containing id, title, parent, and path.

  • report (string): The report's id.
  • title (string): The title shown in the sidebar.
  • parent (string): The item's parent in the navigational hierarchy.
  • path (string): The report's relative path.

Next, hook into the JavaScript reports filter, woocommerce_admin_reports_list, to add a report component.

addFilter(
	'woocommerce_admin_reports_list',
	'analytics/my-report',
	( pages ) => {
		return [
			...pages,
			{
				report: 'example',
				title: 'My Example Extension',
				component: Report,
				navArgs: {
					id: 'my-example-report',
				},
			},
		];
	}
);

Each report is defined by an object containing report, title, component, and optionally navArgs.

  • report (string): The path used to show the report, ex: /analytics/example
  • title (string): The title shown in the breadcrumbs & document title.
  • component (react component): The component containing the report content- everything on the page under the breadcrumbs header.
  • navArgs (object): Arguments used for the new navigation experience, typically used to supply a matching ID for server-side registered menu items.

The component will get the following props:

  • query (object): The query string for the current view, can be used to paginate reports, or sort/filter report data.
  • path (string): The exact path for this view.
  • pathMatch (string): The route matched for this view, should always be /analytics/:report.
  • params (object): This will contain the report from the path, which should match report in the page object.