diff --git a/js/apis/FoodItemsApi.js b/js/apis/FoodItemsApi.js
index 1d0f616..386ef37 100644
--- a/js/apis/FoodItemsApi.js
+++ b/js/apis/FoodItemsApi.js
@@ -19,6 +19,7 @@ export type RawFoodItem = {
latitude: number,
longitude: number,
distance: number,
+ lastupdated: number,
};
export type FoodItemsForLocation = {
diff --git a/js/components/FilterModal.js b/js/components/FilterModal.js
index 9c888c5..fe6e4c4 100644
--- a/js/components/FilterModal.js
+++ b/js/components/FilterModal.js
@@ -53,6 +53,7 @@ const FilterModal = (props: Props) => {
value={isChecked ? 0 : 1}
checked={isChecked}
onCheck={toggleCategory(category, isChecked)}
+ label=""
/>
diff --git a/js/components/FoodItemTile.js b/js/components/FoodItemTile.js
index 3ea16c1..00422e3 100644
--- a/js/components/FoodItemTile.js
+++ b/js/components/FoodItemTile.js
@@ -7,37 +7,33 @@ import typeof PlaceRecord from '../records/PlaceRecord';
import theme from '../ui-theme';
import { Link } from 'react-router-native';
import { routeWithTitle } from '../helpers/RouteHelpers';
-import { TileBox, StrongText, SubText, Thumbnail } from './ItemTile';
+import { TileBox, StrongText, SubText, Thumbnail, QuantityLine } from './ItemTile';
import { withPlace } from '../enhancers/placeEnhancers';
const PlaceNameAndDistance = withPlace(({ place = {}, distance = 999.9 }: { place: PlaceRecord, distance: number }) => {
return {`${place.name || 'Loading...'} - ${parseFloat(distance).toFixed(1)} mi`};
});
-export default pure(
- ({ foodItem }: { foodItem: FoodItemRecord }) => {
- if (!foodItem) {
- return ;
- }
-
- return (
-
-
-
-
-
- {foodItem.name || ''}
-
-
-
-
-
- );
+export default pure(({ foodItem }: { foodItem: FoodItemRecord }) => {
+ if (!foodItem) {
+ return ;
}
-);
+
+ return (
+
+
+
+
+
+ {foodItem.name || ''}
+
+
+
+
+
+
+ );
+});
diff --git a/js/components/ItemTile.js b/js/components/ItemTile.js
index c31530c..7f1be29 100644
--- a/js/components/ItemTile.js
+++ b/js/components/ItemTile.js
@@ -2,8 +2,15 @@
import React from 'react';
import { Text, View, Image } from 'react-native';
import theme from '../ui-theme';
+import { getQuantityLabelText } from '../helpers/QuantityHelpers';
+import moment from 'moment';
+import type { Quantity } from '../constants/QuantityConstants';
-export const Thumbnail = ({ thumb }: { thumb: ?string }) =>
+const getRelativeDateText = (lastupdated: ?number) => {
+ return lastupdated ? ` - ${moment(lastupdated).fromNow()}` : '';
+};
+
+export const Thumbnail = ({ thumb }: { thumb: ?string }) => (
margin: 10,
}}
>
- {!!thumb &&
+ {!!thumb && (
borderRadius: Math.round(theme.itemTile.thumbnailSize / 2),
}}
source={{ uri: thumb }}
- />}
- ;
+ />
+ )}
+
+);
export const StrongText = ({ children, style = {} }: { children?: string, style?: Object }) => {
- return (
-
- {children}
-
- );
+ return {children};
};
export const SubText = ({ children, style = {} }: { children?: string, style?: Object }) => {
- return (
-
- {children}
-
- );
+ return {children};
};
-export const TileBox = ({ children, style = {} }: { children?: any, style?: Object }) =>
-
+export const TileBox = ({ children, style = {} }: { children?: any, style?: Object }) => (
+
{children}
- ;
+
+);
+
+export const QuantityLine = ({ quantity, lastupdated }: { quantity: Quantity, lastupdated: ?number }) => (
+
+ {getQuantityLabelText(quantity)}
+ {getRelativeDateText(lastupdated)}
+
+);
diff --git a/js/components/QuantityPicker.js b/js/components/QuantityPicker.js
index 89b3eab..7d03690 100644
--- a/js/components/QuantityPicker.js
+++ b/js/components/QuantityPicker.js
@@ -1,6 +1,6 @@
// @flow
import React from 'react';
-import { getQuantityText } from '../helpers/QuantityHelpers';
+import { getQuantityDropdownText } from '../helpers/QuantityHelpers';
import { Picker, View } from 'react-native';
import theme from '../ui-theme';
import { pure } from 'recompose';
@@ -16,7 +16,7 @@ const getItemColor = (selected, current) => (selected === current ? selectedColo
const renderQuantityItem = (selectedQuantity: Quantity) => (quantity: Quantity) => (
diff --git a/js/helpers/QuantityHelpers.js b/js/helpers/QuantityHelpers.js
index 6180331..264c52a 100644
--- a/js/helpers/QuantityHelpers.js
+++ b/js/helpers/QuantityHelpers.js
@@ -1,15 +1,25 @@
// @flow
import { type Quantity } from '../constants/QuantityConstants';
-export const getQuantityText = (quantity: Quantity) => {
+const quantityLabels: { [Quantity]: string } = {
+ none: 'None left',
+ few: 'A few left',
+ lots: 'A lot left',
+ many: 'Plenty left',
+};
+
+export const getQuantityLabelText = (quantity: Quantity) => quantityLabels[quantity] || quantityLabels['many'];
+
+export const getQuantityDropdownText = (quantity: Quantity) => {
+ const label = quantityLabels[quantity];
switch (quantity) {
case 'none':
- return 'None left - 0';
+ return `${label} - 0`;
case 'few':
- return 'A few left - 6 or fewer';
+ return `${label} - 6 or fewer`;
case 'lots':
- return 'A lot Left - 10 or fewer';
+ return `${label} - 10 or fewer`;
default:
- return 'Plenty left - more than 10';
+ return `${label} - more than 10`;
}
};
diff --git a/js/records/FoodItemRecord.js b/js/records/FoodItemRecord.js
index e985602..5462ca5 100644
--- a/js/records/FoodItemRecord.js
+++ b/js/records/FoodItemRecord.js
@@ -16,6 +16,7 @@ export type FoodItem = {
images: List,
thumbImage: ?string,
titleImage: ?string,
+ lastupdated: number,
};
const FoodRecordDefaults: FoodItem = {
@@ -30,6 +31,7 @@ const FoodRecordDefaults: FoodItem = {
images: new List(),
thumbImage: '',
titleImage: '',
+ lastupdated: 0,
};
const FoodItemRecord = Record(FoodRecordDefaults, 'FoodItemRecord');
diff --git a/package.json b/package.json
index a5ae086..c6b2ccb 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
"dependencies": {
"babel-preset-es2015": "^6.24.0",
"immutable": "^3.8.1",
+ "moment": "^2.19.2",
"ramda": "^0.24.1",
"react": "~15.4.1",
"react-native": "~0.42.0",
diff --git a/yarn.lock b/yarn.lock
index 1bb7dc9..81c85ba 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3208,6 +3208,10 @@ moment@2.x.x:
version "2.18.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"
+moment@^2.19.2:
+ version "2.19.2"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.2.tgz#8a7f774c95a64550b4c7ebd496683908f9419dbe"
+
morgan@~1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.6.1.tgz#5fd818398c6819cba28a7cd6664f292fe1c0bbf2"