87 lines
2.1 KiB
JavaScript
87 lines
2.1 KiB
JavaScript
|
/* global Metamaps, $ */
|
||
|
|
||
|
import Active from './Active'
|
||
|
import ReactComponents from './ReactComponents'
|
||
|
import ReactDOM from 'react-dom' // TODO ensure this isn't a double import
|
||
|
|
||
|
/*
|
||
|
* - Metamaps.Loading
|
||
|
*/
|
||
|
|
||
|
const ExploreMaps = {
|
||
|
setCollection: function (collection) {
|
||
|
var self = ExploreMaps
|
||
|
|
||
|
if (self.collection) {
|
||
|
self.collection.off('add', self.render)
|
||
|
self.collection.off('successOnFetch', self.handleSuccess)
|
||
|
self.collection.off('errorOnFetch', self.handleError)
|
||
|
}
|
||
|
self.collection = collection
|
||
|
self.collection.on('add', self.render)
|
||
|
self.collection.on('successOnFetch', self.handleSuccess)
|
||
|
self.collection.on('errorOnFetch', self.handleError)
|
||
|
},
|
||
|
render: function (mapperObj, cb) {
|
||
|
var self = ExploreMaps
|
||
|
|
||
|
if (typeof mapperObj === 'function') {
|
||
|
cb = mapperObj
|
||
|
mapperObj = null
|
||
|
}
|
||
|
|
||
|
var exploreObj = {
|
||
|
currentUser: Active.Mapper,
|
||
|
section: self.collection.id,
|
||
|
displayStyle: 'grid',
|
||
|
maps: self.collection,
|
||
|
moreToLoad: self.collection.page != 'loadedAll',
|
||
|
user: mapperObj,
|
||
|
loadMore: self.loadMore
|
||
|
}
|
||
|
ReactDOM.render(
|
||
|
React.createElement(ReactComponents.Maps, exploreObj),
|
||
|
document.getElementById('explore')
|
||
|
)
|
||
|
|
||
|
if (cb) cb()
|
||
|
Metamaps.Loading.hide()
|
||
|
},
|
||
|
loadMore: function () {
|
||
|
var self = ExploreMaps
|
||
|
|
||
|
if (self.collection.page != "loadedAll") {
|
||
|
self.collection.getMaps()
|
||
|
}
|
||
|
else self.render()
|
||
|
},
|
||
|
handleSuccess: function (cb) {
|
||
|
var self = ExploreMaps
|
||
|
|
||
|
if (self.collection && self.collection.id === 'mapper') {
|
||
|
self.fetchUserThenRender(cb)
|
||
|
} else {
|
||
|
self.render(cb)
|
||
|
}
|
||
|
},
|
||
|
handleError: function () {
|
||
|
console.log('error loading maps!') // TODO
|
||
|
},
|
||
|
fetchUserThenRender: function (cb) {
|
||
|
var self = ExploreMaps
|
||
|
|
||
|
// first load the mapper object and then call the render function
|
||
|
$.ajax({
|
||
|
url: '/users/' + self.collection.mapperId + '/details.json',
|
||
|
success: function (response) {
|
||
|
self.render(response, cb)
|
||
|
},
|
||
|
error: function () {
|
||
|
self.render(cb)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default ExploreMaps
|