Customers: add one advanced filter

This commit is contained in:
Paul Sealock 2018-12-11 09:01:22 +13:00
parent d79b490dda
commit 2240d3d713
4 changed files with 69 additions and 21 deletions

View File

@ -2,9 +2,9 @@
/**
* External dependencies
*/
import { __ } from '@wordpress/i18n';
export const showDatePicker = false;
import { __, _x } from '@wordpress/i18n';
import { getRequestByIdString } from '../../../lib/async-requests';
import { NAMESPACE } from '../../../store/constants';
export const filters = [
{
@ -12,6 +12,53 @@ export const filters = [
staticParams: [],
param: 'filter',
showFilters: () => true,
filters: [ { label: __( 'All Registered Customers', 'wc-admin' ), value: 'all' } ],
filters: [
{ label: __( 'All Registered Customers', 'wc-admin' ), value: 'all' },
{ label: __( 'Advanced Filters', 'wc-admin' ), value: 'advanced' },
],
},
];
/*eslint-disable max-len*/
export const advancedFilters = {
title: _x(
'Customers Match {{select /}} Filters',
'A sentence describing filters for Customers. See screen shot for context: https://cloudup.com/cCsm3GeXJbE',
'wc-admin'
),
filters: {
name: {
labels: {
add: __( 'Name', 'wc-admin' ),
placeholder: __( 'Search customer name', 'wc-admin' ),
remove: __( 'Remove customer name filter', 'wc-admin' ),
rule: __( 'Select a customer name filter match', 'wc-admin' ),
/* translators: A sentence describing a Product filter. See screen shot for context: https://cloudup.com/cSsUY9VeCVJ */
title: __( 'Name {{rule /}} {{filter /}}', 'wc-admin' ),
filter: __( 'Select customer name', 'wc-admin' ),
},
rules: [
{
value: 'includes',
/* translators: Sentence fragment, logical, "Includes" refers to orders including a given product(s). Screenshot for context: https://cloudup.com/cSsUY9VeCVJ */
label: _x( 'Includes', 'customer names', 'wc-admin' ),
},
{
value: 'excludes',
/* translators: Sentence fragment, logical, "Excludes" refers to orders excluding a given product(s). Screenshot for context: https://cloudup.com/cSsUY9VeCVJ */
label: _x( 'Excludes', 'customer names', 'wc-admin' ),
},
],
input: {
// Use products autocompleter for now, see https://github.com/woocommerce/wc-admin/issues/1029 for progress
component: 'Search',
type: 'products',
getLabels: getRequestByIdString( NAMESPACE + 'products', product => ( {
id: product.id,
label: product.name,
} ) ),
},
},
},
};
/*eslint-enable max-len*/

View File

@ -13,7 +13,7 @@ import { ReportFilters } from '@woocommerce/components';
/**
* Internal dependencies
*/
import { filters, showDatePicker } from './config';
import { filters, advancedFilters } from './config';
import CustomersReportTable from './table';
export default class CustomersReport extends Component {
@ -26,7 +26,8 @@ export default class CustomersReport extends Component {
query={ query }
path={ path }
filters={ filters }
showDatePicker={ showDatePicker }
showDatePicker={ false }
advancedFilters={ advancedFilters }
/>
<CustomersReportTable query={ query } />
</Fragment>

View File

@ -21,6 +21,7 @@ import * as couponsConfig from 'analytics/report/coupons/config';
import * as ordersConfig from 'analytics/report/orders/config';
import * as productsConfig from 'analytics/report/products/config';
import * as taxesConfig from 'analytics/report/taxes/config';
import * as customersConfig from 'analytics/report/customers/config';
import * as reportsUtils from './utils';
const reportConfigs = {
@ -29,6 +30,7 @@ const reportConfigs = {
orders: ordersConfig,
products: productsConfig,
taxes: taxesConfig,
customers: customersConfig,
};
export function getFilterQuery( endpoint, query ) {
@ -270,8 +272,8 @@ export function getTooltipValueFormat( type ) {
}
}
export function getReportTableQuery( urlQuery, query ) {
const filterQuery = getFilterQuery( 'products', urlQuery );
export function getReportTableQuery( endpoint, urlQuery, query ) {
const filterQuery = getFilterQuery( endpoint, urlQuery );
const datesFromQuery = getCurrentDates( urlQuery );
return {
@ -296,11 +298,9 @@ export function getReportTableQuery( urlQuery, query ) {
* @return {Object} Object Table data response
*/
export function getReportTableData( endpoint, urlQuery, select, query = {} ) {
const { getReportItems, isReportItemsRequesting, isReportItemsError } = select(
'wc-api'
);
const { getReportItems, isReportItemsRequesting, isReportItemsError } = select( 'wc-api' );
const tableQuery = reportsUtils.getReportTableQuery( urlQuery, query );
const tableQuery = reportsUtils.getReportTableQuery( endpoint, urlQuery, query );
const response = {
query: tableQuery,
isRequesting: false,

View File

@ -6209,7 +6209,7 @@
"dependencies": {
"jsesc": {
"version": "0.5.0",
"resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
"dev": true
},
@ -6226,13 +6226,13 @@
},
"regjsgen": {
"version": "0.2.0",
"resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
"integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
"dev": true
},
"regjsparser": {
"version": "0.1.5",
"resolved": "http://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
"integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
"dev": true,
"requires": {
@ -7684,7 +7684,7 @@
},
"espree": {
"version": "3.5.4",
"resolved": "http://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
"resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
"integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
"requires": {
"acorn": "^5.5.0",
@ -14082,7 +14082,7 @@
"dependencies": {
"ansi-escapes": {
"version": "1.4.0",
"resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
"integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
"dev": true
},
@ -14144,7 +14144,7 @@
},
"opn": {
"version": "4.0.2",
"resolved": "http://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
"resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
"integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=",
"dev": true,
"requires": {
@ -14817,7 +14817,7 @@
},
"chalk": {
"version": "1.1.3",
"resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
@ -15319,7 +15319,7 @@
},
"minimist": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
@ -20823,7 +20823,7 @@
},
"yargs": {
"version": "11.1.0",
"resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
"integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
"requires": {
"cliui": "^4.0.0",