Add customer field
This commit is contained in:
parent
679c193aab
commit
535d1c780c
6 changed files with 37 additions and 6 deletions
|
@ -112,7 +112,7 @@ export const CustomerDetailsView: React.FC<CustomerDetailsViewProps> = ({
|
||||||
onViewAllOrdersClick={() =>
|
onViewAllOrdersClick={() =>
|
||||||
navigate(
|
navigate(
|
||||||
orderListUrl({
|
orderListUrl({
|
||||||
email: maybe(() => customerDetails.data.user.email)
|
customer: maybe(() => customerDetails.data.user.email)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,8 @@ import { FilterOpts, MinMax } from "@saleor/types";
|
||||||
import { OrderStatusFilter } from "@saleor/types/globalTypes";
|
import { OrderStatusFilter } from "@saleor/types/globalTypes";
|
||||||
import {
|
import {
|
||||||
createDateField,
|
createDateField,
|
||||||
createOptionsField
|
createOptionsField,
|
||||||
|
createTextField
|
||||||
} from "@saleor/utils/filters/fields";
|
} from "@saleor/utils/filters/fields";
|
||||||
import { IFilter } from "@saleor/components/Filter";
|
import { IFilter } from "@saleor/components/Filter";
|
||||||
import { orderStatusMessages } from "@saleor/misc";
|
import { orderStatusMessages } from "@saleor/misc";
|
||||||
|
@ -12,15 +13,21 @@ import { commonMessages } from "@saleor/intl";
|
||||||
|
|
||||||
export enum OrderFilterKeys {
|
export enum OrderFilterKeys {
|
||||||
created = "created",
|
created = "created",
|
||||||
|
customer = "customer",
|
||||||
status = "status"
|
status = "status"
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface OrderListFilterOpts {
|
export interface OrderListFilterOpts {
|
||||||
created: FilterOpts<MinMax>;
|
created: FilterOpts<MinMax>;
|
||||||
|
customer: FilterOpts<string>;
|
||||||
status: FilterOpts<OrderStatusFilter[]>;
|
status: FilterOpts<OrderStatusFilter[]>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
|
customer: {
|
||||||
|
defaultMessage: "Customer",
|
||||||
|
description: "order"
|
||||||
|
},
|
||||||
placed: {
|
placed: {
|
||||||
defaultMessage: "Placed",
|
defaultMessage: "Placed",
|
||||||
description: "order"
|
description: "order"
|
||||||
|
@ -32,6 +39,14 @@ export function createFilterStructure(
|
||||||
opts: OrderListFilterOpts
|
opts: OrderListFilterOpts
|
||||||
): IFilter<OrderFilterKeys> {
|
): IFilter<OrderFilterKeys> {
|
||||||
return [
|
return [
|
||||||
|
{
|
||||||
|
...createTextField(
|
||||||
|
OrderFilterKeys.customer,
|
||||||
|
intl.formatMessage(messages.customer),
|
||||||
|
opts.customer.value
|
||||||
|
),
|
||||||
|
active: opts.customer.active
|
||||||
|
},
|
||||||
{
|
{
|
||||||
...createDateField(
|
...createDateField(
|
||||||
OrderFilterKeys.created,
|
OrderFilterKeys.created,
|
||||||
|
|
|
@ -19,7 +19,7 @@ export const orderListPath = orderSectionUrl;
|
||||||
export enum OrderListUrlFiltersEnum {
|
export enum OrderListUrlFiltersEnum {
|
||||||
createdFrom = "createdFrom",
|
createdFrom = "createdFrom",
|
||||||
createdTo = "createdTo",
|
createdTo = "createdTo",
|
||||||
email = "email",
|
customer = "customer",
|
||||||
payment = "payment",
|
payment = "payment",
|
||||||
query = "query"
|
query = "query"
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ describe("Filtering query params", () => {
|
||||||
const params: OrderListUrlFilters = {
|
const params: OrderListUrlFilters = {
|
||||||
createdFrom: date.from,
|
createdFrom: date.from,
|
||||||
createdTo: date.to,
|
createdTo: date.to,
|
||||||
email: "email@example.com",
|
customer: "email@example.com",
|
||||||
status: [
|
status: [
|
||||||
OrderStatusFilter.FULFILLED,
|
OrderStatusFilter.FULFILLED,
|
||||||
OrderStatusFilter.PARTIALLY_FULFILLED
|
OrderStatusFilter.PARTIALLY_FULFILLED
|
||||||
|
@ -45,6 +45,10 @@ describe("Filtering URL params", () => {
|
||||||
min: date.from
|
min: date.from
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
customer: {
|
||||||
|
active: false,
|
||||||
|
value: "email@example.com"
|
||||||
|
},
|
||||||
status: {
|
status: {
|
||||||
active: false,
|
active: false,
|
||||||
value: [
|
value: [
|
||||||
|
|
|
@ -15,7 +15,8 @@ import {
|
||||||
dedupeFilter,
|
dedupeFilter,
|
||||||
getGteLteVariables,
|
getGteLteVariables,
|
||||||
getMinMaxQueryParam,
|
getMinMaxQueryParam,
|
||||||
getMultipleEnumValueQueryParam
|
getMultipleEnumValueQueryParam,
|
||||||
|
getSingleValueQueryParam
|
||||||
} from "../../../utils/filters";
|
} from "../../../utils/filters";
|
||||||
import {
|
import {
|
||||||
OrderListUrlFilters,
|
OrderListUrlFilters,
|
||||||
|
@ -43,6 +44,10 @@ export function getFilterOpts(
|
||||||
min: maybe(() => params.createdFrom, "")
|
min: maybe(() => params.createdFrom, "")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
customer: {
|
||||||
|
active: !!maybe(() => params.customer),
|
||||||
|
value: params.customer
|
||||||
|
},
|
||||||
status: {
|
status: {
|
||||||
active: maybe(() => params.status !== undefined, false),
|
active: maybe(() => params.status !== undefined, false),
|
||||||
value: maybe(
|
value: maybe(
|
||||||
|
@ -66,7 +71,7 @@ export function getFilterVariables(
|
||||||
gte: params.createdFrom,
|
gte: params.createdFrom,
|
||||||
lte: params.createdTo
|
lte: params.createdTo
|
||||||
}),
|
}),
|
||||||
customer: params.email,
|
customer: params.customer,
|
||||||
search: params.query,
|
search: params.query,
|
||||||
status: maybe(() =>
|
status: maybe(() =>
|
||||||
params.status.map(status => findInEnum(status, OrderStatusFilter))
|
params.status.map(status => findInEnum(status, OrderStatusFilter))
|
||||||
|
@ -93,6 +98,9 @@ export function getFilterQueryParam(
|
||||||
OrderListUrlFiltersWithMultipleValuesEnum.status,
|
OrderListUrlFiltersWithMultipleValuesEnum.status,
|
||||||
OrderStatus
|
OrderStatus
|
||||||
);
|
);
|
||||||
|
|
||||||
|
case OrderFilterKeys.customer:
|
||||||
|
return getSingleValueQueryParam(filter, OrderListUrlFiltersEnum.customer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,10 @@ const props: OrderListPageProps = {
|
||||||
min: "50"
|
min: "50"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
customer: {
|
||||||
|
active: false,
|
||||||
|
value: "Jesse"
|
||||||
|
},
|
||||||
status: {
|
status: {
|
||||||
active: false,
|
active: false,
|
||||||
value: [OrderStatusFilter.CANCELED, OrderStatusFilter.FULFILLED]
|
value: [OrderStatusFilter.CANCELED, OrderStatusFilter.FULFILLED]
|
||||||
|
|
Loading…
Reference in a new issue