Create appendTimestamp() utils function (https://github.com/woocommerce/woocommerce-admin/pull/542)
* appendTimestamp() utils function * Make appendTimestamp() to throw and error if timeOfDay is not a valid value
This commit is contained in:
parent
206e0b5b7e
commit
3982ebc32e
|
@ -15,7 +15,7 @@ import { get } from 'lodash';
|
||||||
import { EmptyContent, ReportFilters } from '@woocommerce/components';
|
import { EmptyContent, ReportFilters } from '@woocommerce/components';
|
||||||
import { filters, advancedFilterConfig } from './config';
|
import { filters, advancedFilterConfig } from './config';
|
||||||
import { getAdminLink } from 'lib/nav-utils';
|
import { getAdminLink } from 'lib/nav-utils';
|
||||||
import { getCurrentDates, getIntervalForQuery } from 'lib/date';
|
import { appendTimestamp, getCurrentDates, getIntervalForQuery } from 'lib/date';
|
||||||
import { getReportChartData } from 'store/reports/utils';
|
import { getReportChartData } from 'store/reports/utils';
|
||||||
import { MAX_PER_PAGE } from 'store/constants';
|
import { MAX_PER_PAGE } from 'store/constants';
|
||||||
import OrdersReportChart from './chart';
|
import OrdersReportChart from './chart';
|
||||||
|
@ -122,8 +122,8 @@ export default compose(
|
||||||
order: query.order || 'asc',
|
order: query.order || 'asc',
|
||||||
page: query.page || 1,
|
page: query.page || 1,
|
||||||
per_page: query.per_page || 25,
|
per_page: query.per_page || 25,
|
||||||
after: datesFromQuery.primary.after + 'T00:00:00+00:00',
|
after: appendTimestamp( datesFromQuery.primary.after, 'start' ),
|
||||||
before: datesFromQuery.primary.before + 'T23:59:59+00:00',
|
before: appendTimestamp( datesFromQuery.primary.before, 'end' ),
|
||||||
status: [ 'processing', 'on-hold', 'completed' ],
|
status: [ 'processing', 'on-hold', 'completed' ],
|
||||||
};
|
};
|
||||||
const orders = getOrders( tableQuery );
|
const orders = getOrders( tableQuery );
|
||||||
|
|
|
@ -17,7 +17,7 @@ import { Card, ReportFilters, TableCard, TablePlaceholder } from '@woocommerce/c
|
||||||
import { downloadCSVFile, generateCSVDataFromTable, generateCSVFileName } from 'lib/csv';
|
import { downloadCSVFile, generateCSVDataFromTable, generateCSVFileName } from 'lib/csv';
|
||||||
import { formatCurrency, getCurrencyFormatDecimal } from 'lib/currency';
|
import { formatCurrency, getCurrencyFormatDecimal } from 'lib/currency';
|
||||||
import { getAdminLink, onQueryChange } from 'lib/nav-utils';
|
import { getAdminLink, onQueryChange } from 'lib/nav-utils';
|
||||||
import { getCurrentDates, getDateFormatsForInterval, getIntervalForQuery } from 'lib/date';
|
import { appendTimestamp, getCurrentDates, getDateFormatsForInterval, getIntervalForQuery } from 'lib/date';
|
||||||
import OrdersReportChart from './chart';
|
import OrdersReportChart from './chart';
|
||||||
|
|
||||||
export class RevenueReport extends Component {
|
export class RevenueReport extends Component {
|
||||||
|
@ -236,8 +236,8 @@ export default compose(
|
||||||
order: query.order || 'asc',
|
order: query.order || 'asc',
|
||||||
page: query.page || 1,
|
page: query.page || 1,
|
||||||
per_page: query.per_page || 25,
|
per_page: query.per_page || 25,
|
||||||
after: datesFromQuery.primary.after + 'T00:00:00+00:00',
|
after: appendTimestamp( datesFromQuery.primary.after, 'start' ),
|
||||||
before: datesFromQuery.primary.before + 'T23:59:59+00:00',
|
before: appendTimestamp( datesFromQuery.primary.before, 'end' ),
|
||||||
};
|
};
|
||||||
const tableData = getReportStats( 'revenue', tableQuery );
|
const tableData = getReportStats( 'revenue', tableQuery );
|
||||||
const isTableDataError = isReportStatsError( 'revenue', tableQuery );
|
const isTableDataError = isReportStatsError( 'revenue', tableQuery );
|
||||||
|
|
|
@ -48,6 +48,23 @@ export const periods = [
|
||||||
{ value: 'previous_year', label: __( 'Previous Year', 'wc-admin' ) },
|
{ value: 'previous_year', label: __( 'Previous Year', 'wc-admin' ) },
|
||||||
];
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds timestamp to a string date.
|
||||||
|
*
|
||||||
|
* @param {string} date - Date as a string.
|
||||||
|
* @param {string} timeOfDay - Either `start` or `end` of the day.
|
||||||
|
* @return {string} - String date with timestamp attached.
|
||||||
|
*/
|
||||||
|
export const appendTimestamp = ( date, timeOfDay ) => {
|
||||||
|
if ( timeOfDay === 'start' ) {
|
||||||
|
return date + 'T00:00:00+00:00';
|
||||||
|
}
|
||||||
|
if ( timeOfDay === 'end' ) {
|
||||||
|
return date + 'T23:59:59+00:00';
|
||||||
|
}
|
||||||
|
throw new Error( 'appendTimestamp requires second parameter to be either `start` or `end`' );
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a string to Moment object
|
* Convert a string to Moment object
|
||||||
*
|
*
|
||||||
|
|
|
@ -10,6 +10,7 @@ import { setLocaleData } from '@wordpress/i18n';
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
import {
|
import {
|
||||||
|
appendTimestamp,
|
||||||
toMoment,
|
toMoment,
|
||||||
getLastPeriod,
|
getLastPeriod,
|
||||||
getCurrentPeriod,
|
getCurrentPeriod,
|
||||||
|
@ -23,6 +24,20 @@ import {
|
||||||
getPreviousDate,
|
getPreviousDate,
|
||||||
} from 'lib/date';
|
} from 'lib/date';
|
||||||
|
|
||||||
|
describe( 'appendTimestamp', () => {
|
||||||
|
it( 'should append `start` timestamp', () => {
|
||||||
|
expect( appendTimestamp( '2018-01-01', 'start' ) ).toEqual( '2018-01-01T00:00:00+00:00' );
|
||||||
|
} );
|
||||||
|
|
||||||
|
it( 'should append `end` timestamp', () => {
|
||||||
|
expect( appendTimestamp( '2018-01-01', 'end' ) ).toEqual( '2018-01-01T23:59:59+00:00' );
|
||||||
|
} );
|
||||||
|
|
||||||
|
it( 'should throw and error if `timeOfDay` is not valid', () => {
|
||||||
|
expect( () => appendTimestamp( '2018-01-01' ) ).toThrow( Error );
|
||||||
|
} );
|
||||||
|
} );
|
||||||
|
|
||||||
describe( 'toMoment', () => {
|
describe( 'toMoment', () => {
|
||||||
it( 'should pass through a valid Moment object as an argument', () => {
|
it( 'should pass through a valid Moment object as an argument', () => {
|
||||||
const now = moment();
|
const now = moment();
|
||||||
|
|
|
@ -9,6 +9,7 @@ import { forEach, isNull } from 'lodash';
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
import { MAX_PER_PAGE } from 'store/constants';
|
import { MAX_PER_PAGE } from 'store/constants';
|
||||||
|
import { appendTimestamp } from 'lib/date';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if a report object is empty.
|
* Returns true if a report object is empty.
|
||||||
|
@ -58,8 +59,8 @@ export function getSummaryNumbers( endpoint, dates, select ) {
|
||||||
|
|
||||||
const primaryQuery = {
|
const primaryQuery = {
|
||||||
...baseQuery,
|
...baseQuery,
|
||||||
after: dates.primary.after + 'T00:00:00+00:00',
|
after: appendTimestamp( dates.primary.after, 'start' ),
|
||||||
before: dates.primary.before + 'T23:59:59+00:00',
|
before: appendTimestamp( dates.primary.before, 'end' ),
|
||||||
};
|
};
|
||||||
const primary = getReportStats( endpoint, primaryQuery );
|
const primary = getReportStats( endpoint, primaryQuery );
|
||||||
if ( isReportStatsRequesting( endpoint, primaryQuery ) ) {
|
if ( isReportStatsRequesting( endpoint, primaryQuery ) ) {
|
||||||
|
@ -73,8 +74,8 @@ export function getSummaryNumbers( endpoint, dates, select ) {
|
||||||
const secondaryQuery = {
|
const secondaryQuery = {
|
||||||
...baseQuery,
|
...baseQuery,
|
||||||
per_page: 1,
|
per_page: 1,
|
||||||
after: dates.secondary.after + 'T00:00:00+00:00',
|
after: appendTimestamp( dates.secondary.after, 'start' ),
|
||||||
before: dates.secondary.before + 'T23:59:59+00:00',
|
before: appendTimestamp( dates.secondary.before, 'end' ),
|
||||||
};
|
};
|
||||||
const secondary = getReportStats( endpoint, secondaryQuery );
|
const secondary = getReportStats( endpoint, secondaryQuery );
|
||||||
if ( isReportStatsRequesting( endpoint, secondaryQuery ) ) {
|
if ( isReportStatsRequesting( endpoint, secondaryQuery ) ) {
|
||||||
|
@ -109,8 +110,8 @@ export function getReportChartData( endpoint, query, select ) {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
query.after += 'T00:00:00+00:00';
|
query.after = appendTimestamp( query.after, 'start' );
|
||||||
query.before += 'T23:59:59+00:00';
|
query.before = appendTimestamp( query.before, 'end' );
|
||||||
|
|
||||||
const stats = getReportStats( endpoint, query );
|
const stats = getReportStats( endpoint, query );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue