Better display of time_to, close issue #32.
This commit is contained in:
parent
589bfdfb13
commit
aae71282aa
@ -3,18 +3,34 @@ import moment from 'moment'
|
|||||||
require('es6-promise').polyfill()
|
require('es6-promise').polyfill()
|
||||||
require('isomorphic-fetch')
|
require('isomorphic-fetch')
|
||||||
|
|
||||||
|
const postProcessAPIResults = function (flat) {
|
||||||
|
/* eslint-disable camelcase */
|
||||||
|
if (flat.date) {
|
||||||
|
flat.date = moment(flat.date)
|
||||||
|
}
|
||||||
|
if (flat.flatisfy_time_to) {
|
||||||
|
const momentifiedTimeTo = {}
|
||||||
|
Object.keys(flat.flatisfy_time_to).forEach(key => {
|
||||||
|
const value = flat.flatisfy_time_to[key]
|
||||||
|
momentifiedTimeTo[key] = Object.assign(
|
||||||
|
{},
|
||||||
|
value,
|
||||||
|
{ time: moment.duration(value.time, 'seconds') }
|
||||||
|
)
|
||||||
|
})
|
||||||
|
flat.flatisfy_time_to = momentifiedTimeTo
|
||||||
|
}
|
||||||
|
/* eslint-enable camelcase */
|
||||||
|
return flat
|
||||||
|
}
|
||||||
|
|
||||||
export const getFlats = function (callback) {
|
export const getFlats = function (callback) {
|
||||||
fetch('/api/v1/flats', { credentials: 'same-origin' })
|
fetch('/api/v1/flats', { credentials: 'same-origin' })
|
||||||
.then(function (response) {
|
.then(function (response) {
|
||||||
return response.json()
|
return response.json()
|
||||||
}).then(function (json) {
|
}).then(function (json) {
|
||||||
const flats = json.data
|
const flats = json.data
|
||||||
flats.map(flat => {
|
flats.map(postProcessAPIResults)
|
||||||
if (flat.date) {
|
|
||||||
flat.date = moment(flat.date)
|
|
||||||
}
|
|
||||||
return flat
|
|
||||||
})
|
|
||||||
callback(flats)
|
callback(flats)
|
||||||
}).catch(function (ex) {
|
}).catch(function (ex) {
|
||||||
console.error('Unable to parse flats: ' + ex)
|
console.error('Unable to parse flats: ' + ex)
|
||||||
@ -29,11 +45,8 @@ export const getFlat = function (flatId, callback) {
|
|||||||
.then(function (response) {
|
.then(function (response) {
|
||||||
return response.json()
|
return response.json()
|
||||||
}).then(function (json) {
|
}).then(function (json) {
|
||||||
const flat = json.data
|
const flat = postProcessAPIResults(json.data)
|
||||||
if (flat.date) {
|
callback(flat)
|
||||||
flat.date = moment(flat.date)
|
|
||||||
}
|
|
||||||
callback(json.data)
|
|
||||||
}).catch(function (ex) {
|
}).catch(function (ex) {
|
||||||
console.error('Unable to parse flats: ' + ex)
|
console.error('Unable to parse flats: ' + ex)
|
||||||
})
|
})
|
||||||
|
@ -23,12 +23,12 @@
|
|||||||
import L from 'leaflet'
|
import L from 'leaflet'
|
||||||
// Fix for a bug in Leaflet default icon
|
// Fix for a bug in Leaflet default icon
|
||||||
// see https://github.com/PaulLeCam/react-leaflet/issues/255#issuecomment-261904061
|
// see https://github.com/PaulLeCam/react-leaflet/issues/255#issuecomment-261904061
|
||||||
delete L.Icon.Default.prototype._getIconUrl;
|
delete L.Icon.Default.prototype._getIconUrl
|
||||||
L.Icon.Default.mergeOptions({
|
L.Icon.Default.mergeOptions({
|
||||||
iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
|
iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
|
||||||
iconUrl: require('leaflet/dist/images/marker-icon.png'),
|
iconUrl: require('leaflet/dist/images/marker-icon.png'),
|
||||||
shadowUrl: require('leaflet/dist/images/marker-shadow.png'),
|
shadowUrl: require('leaflet/dist/images/marker-shadow.png')
|
||||||
});
|
})
|
||||||
|
|
||||||
import 'leaflet/dist/leaflet.css'
|
import 'leaflet/dist/leaflet.css'
|
||||||
|
|
||||||
|
@ -11,7 +11,8 @@ export default {
|
|||||||
'Unfollow': 'Unfollow',
|
'Unfollow': 'Unfollow',
|
||||||
'Close': 'Close',
|
'Close': 'Close',
|
||||||
'sortUp': 'Sort in ascending order',
|
'sortUp': 'Sort in ascending order',
|
||||||
'sortDown': 'Sort in descending order'
|
'sortDown': 'Sort in descending order',
|
||||||
|
'mins': 'min | mins'
|
||||||
},
|
},
|
||||||
home: {
|
home: {
|
||||||
'new_available_flats': 'New available flats'
|
'new_available_flats': 'New available flats'
|
||||||
|
@ -85,7 +85,7 @@
|
|||||||
<template v-if="Object.keys(flat.flatisfy_time_to).length">
|
<template v-if="Object.keys(flat.flatisfy_time_to).length">
|
||||||
<ul class="time_to_list">
|
<ul class="time_to_list">
|
||||||
<li v-for="(time_to, place) in flat.flatisfy_time_to" :key="place">
|
<li v-for="(time_to, place) in flat.flatisfy_time_to" :key="place">
|
||||||
{{ place }}: {{ time_to["time"] }}
|
{{ place }}: {{ humanizeTimeTo(time_to["time"]) }}
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</template>
|
</template>
|
||||||
@ -242,6 +242,11 @@ export default {
|
|||||||
this.$store.dispatch('updateFlatStatus', { flatId: this.$route.params.id, newStatus: status })
|
this.$store.dispatch('updateFlatStatus', { flatId: this.$route.params.id, newStatus: status })
|
||||||
},
|
},
|
||||||
|
|
||||||
|
humanizeTimeTo (time) {
|
||||||
|
const minutes = Math.floor(time.as('minutes'))
|
||||||
|
return minutes + ' ' + this.$tc('common.mins', minutes)
|
||||||
|
},
|
||||||
|
|
||||||
capitalize: capitalize
|
capitalize: capitalize
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user