woocommerce/plugins/woocommerce-admin/client/analytics/report
Chi-Hsuan Huang c05605fddf Update linting, testing, `@types/*` dependencies (https://github.com/woocommerce/woocommerce-admin/pull/8475)
* Update husky from 4 to 7

* Update @types/jest from 26 to 27

* Update lint-staged from 10 to 12

* Update babel-jest from 26 to 27

* Update @typescript-eslint/eslint-plugin from 4 to 5

* Update @typescript-eslint/parser from 4 to 5

* Update chalk from 4 to 5

* Update concurrently from 5 to 7

* Update stylelint from 9 to 14 and stylelint-config-wordpress from 13 to 17

* Update @wordpress/prettier-config from 0.4 to 1.1

* Update eslint from 7 to 8, @wordpress/eslint-plugin from 8 to 10, eslint-plugin-testing-library to 5

* Fix lint errors after updating eslint-plugin-testing-library

* Fix style lint

* Rename .stylelintrc.json -> stylelint.config.js & add todo comment

Fix stylelint.config.js

* Remove @wordpress/e2e-test-utils

* Add changelogs for eslint-plugin

* Update storybook/preview.js since addDecorator has been deprecated

Remove parameters

* Import directly from @storybook/addon-docs

* Migrate some stories to use @storybook/addon-controls

Add a comment for @storybook/addon-knobs

* Update changelogs

* Update preview.js to fix lint warning

* Update pnpm-lock.yaml

* Fix eslint layout errors (https://github.com/woocommerce/woocommerce-admin/pull/8484)
2022-03-18 19:45:14 +08:00
..
categories Update linting, testing, `@types/*` dependencies (https://github.com/woocommerce/woocommerce-admin/pull/8475) 2022-03-18 19:45:14 +08:00
coupons Update linting, testing, `@types/*` dependencies (https://github.com/woocommerce/woocommerce-admin/pull/8475) 2022-03-18 19:45:14 +08:00
customers Update linting, testing, `@types/*` dependencies (https://github.com/woocommerce/woocommerce-admin/pull/8475) 2022-03-18 19:45:14 +08:00
downloads Update linting, testing, `@types/*` dependencies (https://github.com/woocommerce/woocommerce-admin/pull/8475) 2022-03-18 19:45:14 +08:00
orders Update linting, testing, `@types/*` dependencies (https://github.com/woocommerce/woocommerce-admin/pull/8475) 2022-03-18 19:45:14 +08:00
products Update linting, testing, `@types/*` dependencies (https://github.com/woocommerce/woocommerce-admin/pull/8475) 2022-03-18 19:45:14 +08:00
revenue Update linting, testing, `@types/*` dependencies (https://github.com/woocommerce/woocommerce-admin/pull/8475) 2022-03-18 19:45:14 +08:00
stock Update linting, testing, `@types/*` dependencies (https://github.com/woocommerce/woocommerce-admin/pull/8475) 2022-03-18 19:45:14 +08:00
taxes Update linting, testing, `@types/*` dependencies (https://github.com/woocommerce/woocommerce-admin/pull/8475) 2022-03-18 19:45:14 +08:00
variations Update linting, testing, `@types/*` dependencies (https://github.com/woocommerce/woocommerce-admin/pull/8475) 2022-03-18 19:45:14 +08:00
README.md Navigation: Introduce wc-admin registration client side navArgs (https://github.com/woocommerce/woocommerce-admin/pull/5773) 2020-12-03 11:56:24 +13:00
get-reports.js Update linting, testing, `@types/*` dependencies (https://github.com/woocommerce/woocommerce-admin/pull/8475) 2022-03-18 19:45:14 +08:00
index.js Update linting, testing, `@types/*` dependencies (https://github.com/woocommerce/woocommerce-admin/pull/8475) 2022-03-18 19:45:14 +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 heirarchy.
  • 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.