New: Project Aphrodite

This commit is contained in:
Qstick
2018-11-23 02:04:42 -05:00
parent 65efa15551
commit 8430cb40ab
1080 changed files with 73015 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
import moment from 'moment';
import isAfter from 'Utilities/Date/isAfter';
import isBefore from 'Utilities/Date/isBefore';
import * as filterTypes from 'Helpers/Props/filterTypes';
export default function(itemValue, filterValue, type) {
if (!itemValue) {
return false;
}
switch (type) {
case filterTypes.LESS_THAN:
return moment(itemValue).isBefore(filterValue);
case filterTypes.GREATER_THAN:
return moment(itemValue).isAfter(filterValue);
case filterTypes.IN_LAST:
return (
isAfter(itemValue, { [filterValue.time]: filterValue.value * -1 }) &&
isBefore(itemValue)
);
case filterTypes.IN_NEXT:
return (
isAfter(itemValue) &&
isBefore(itemValue, { [filterValue.time]: filterValue.value })
);
default:
return false;
}
}

View File

@@ -0,0 +1,11 @@
import moment from 'moment';
function formatDate(date, dateFormat) {
if (!date) {
return '';
}
return moment(date).format(dateFormat);
}
export default formatDate;

View File

@@ -0,0 +1,39 @@
import moment from 'moment';
import formatTime from './formatTime';
import isToday from './isToday';
import isTomorrow from './isTomorrow';
import isYesterday from './isYesterday';
function getRelativeDay(date, includeRelativeDate) {
if (!includeRelativeDate) {
return '';
}
if (isYesterday(date)) {
return 'Yesterday, ';
}
if (isToday(date)) {
return 'Today, ';
}
if (isTomorrow(date)) {
return 'Tomorrow, ';
}
return '';
}
function formatDateTime(date, dateFormat, timeFormat, { includeSeconds = false, includeRelativeDay = false } = {}) {
if (!date) {
return '';
}
const relativeDay = getRelativeDay(date, includeRelativeDay);
const formattedDate = moment(date).format(dateFormat);
const formattedTime = formatTime(date, timeFormat, { includeMinuteZero: true, includeSeconds });
return `${relativeDay}${formattedDate} ${formattedTime}`;
}
export default formatDateTime;

View File

@@ -0,0 +1,19 @@
import moment from 'moment';
function formatTime(date, timeFormat, { includeMinuteZero = false, includeSeconds = false } = {}) {
if (!date) {
return '';
}
if (includeSeconds) {
timeFormat = timeFormat.replace(/\(?:mm\)?/, ':mm:ss');
} else if (includeMinuteZero) {
timeFormat = timeFormat.replace('(:mm)', ':mm');
} else {
timeFormat = timeFormat.replace('(:mm)', '');
}
return moment(date).format(timeFormat);
}
export default formatTime;

View File

@@ -0,0 +1,24 @@
import moment from 'moment';
import padNumber from 'Utilities/Number/padNumber';
function formatTimeSpan(timeSpan) {
if (!timeSpan) {
return '';
}
const duration = moment.duration(timeSpan);
const days = duration.get('days');
const hours = padNumber(duration.get('hours'), 2);
const minutes = padNumber(duration.get('minutes'), 2);
const seconds = padNumber(duration.get('seconds'), 2);
const time = `${hours}:${minutes}:${seconds}`;
if (days > 0) {
return `${days}d ${time}`;
}
return time;
}
export default formatTimeSpan;

View File

@@ -0,0 +1,42 @@
import moment from 'moment';
import formatTime from 'Utilities/Date/formatTime';
import isInNextWeek from 'Utilities/Date/isInNextWeek';
import isToday from 'Utilities/Date/isToday';
import isTomorrow from 'Utilities/Date/isTomorrow';
import isYesterday from 'Utilities/Date/isYesterday';
function getRelativeDate(date, shortDateFormat, showRelativeDates, { timeFormat, includeSeconds = false, timeForToday = false } = {}) {
if (!date) {
return null;
}
const isTodayDate = isToday(date);
if (isTodayDate && timeForToday && timeFormat) {
return formatTime(date, timeFormat, { includeMinuteZero: true, includeSeconds });
}
if (!showRelativeDates) {
return moment(date).format(shortDateFormat);
}
if (isYesterday(date)) {
return 'Yesterday';
}
if (isTodayDate) {
return 'Today';
}
if (isTomorrow(date)) {
return 'Tomorrow';
}
if (isInNextWeek(date)) {
return moment(date).format('dddd');
}
return moment(date).format(shortDateFormat);
}
export default getRelativeDate;

View File

@@ -0,0 +1,17 @@
import moment from 'moment';
function isAfter(date, offsets = {}) {
if (!date) {
return false;
}
const offsetTime = moment();
Object.keys(offsets).forEach((key) => {
offsetTime.add(offsets[key], key);
});
return moment(date).isAfter(offsetTime);
}
export default isAfter;

View File

@@ -0,0 +1,17 @@
import moment from 'moment';
function isBefore(date, offsets = {}) {
if (!date) {
return false;
}
const offsetTime = moment();
Object.keys(offsets).forEach((key) => {
offsetTime.add(offsets[key], key);
});
return moment(date).isBefore(offsetTime);
}
export default isBefore;

View File

@@ -0,0 +1,11 @@
import moment from 'moment';
function isInNextWeek(date) {
if (!date) {
return false;
}
const now = moment();
return moment(date).isBetween(now, now.clone().add(6, 'days').endOf('day'));
}
export default isInNextWeek;

View File

@@ -0,0 +1,11 @@
import moment from 'moment';
function isSameWeek(date) {
if (!date) {
return false;
}
return moment(date).isSame(moment(), 'week');
}
export default isSameWeek;

View File

@@ -0,0 +1,11 @@
import moment from 'moment';
function isToday(date) {
if (!date) {
return false;
}
return moment(date).isSame(moment(), 'day');
}
export default isToday;

View File

@@ -0,0 +1,11 @@
import moment from 'moment';
function isTomorrow(date) {
if (!date) {
return false;
}
return moment(date).isSame(moment().add(1, 'day'), 'day');
}
export default isTomorrow;

View File

@@ -0,0 +1,11 @@
import moment from 'moment';
function isYesterday(date) {
if (!date) {
return false;
}
return moment(date).isSame(moment().subtract(1, 'day'), 'day');
}
export default isYesterday;