vineanova-redux-artifacts
Version:
## Overview
63 lines (54 loc) • 1.73 kB
JavaScript
import { createSelector } from 'reselect';
import isEmpty from 'lodash/isEmpty';
import {isValid, format} from 'date-fns';
import isNil from 'lodash/isNil';
import has from 'lodash/has';
const viewDateFormat = 'dd/MM/yyyy';
export const getWorkRecordsPieceworkGroupRowsEntity = state => state.entities.workRecordsPieceworkGroupRows;
export const getWorkRecordsPieceworkGroupRowsEntityMeta = createSelector(
[getWorkRecordsPieceworkGroupRowsEntity],
reference => {
const { isLoading, isLoaded, hasError, error } = reference;
return {
isLoading,
isLoaded,
hasError,
error,
};
},
);
export const getWorkRecordsPieceworkGroupRowsEntityData = createSelector(
[getWorkRecordsPieceworkGroupRowsEntity],
reference => {
const { data = [] } = reference;
const refData = isEmpty(data) ? [] : data;
if (!Array.isArray(refData) || isNil(refData)) return [];
const formattedData = refData.map(d => {
let hasDates = false;
let fromDate = '';
let toDate = '';
let fromTo = '';
if(has(d, 'effectiveToDate') && has(d, 'effectiveFromDate')){
hasDates = true;
toDate =
!isEmpty(d.effectiveToDate) && isValid(new Date(d.effectiveToDate))
? format(new Date(d.effectiveToDate), viewDateFormat)
: '';
fromDate =
!isEmpty(d.effectiveFromDate) &&
isValid(new Date(d.effectiveFromDate))
? format(new Date(d.effectiveFromDate), viewDateFormat)
: '';
}
return {
...d,
...(hasDates && {
fromDate,
toDate,
fromTo,
})
};
});
return formattedData;
},
);