metamaps--metamaps/app/assets/javascripts/metamaps/Metamaps.Views.js

87 lines
2.5 KiB
JavaScript
Raw Normal View History

2014-08-06 14:09:01 +00:00
(function () {
Metamaps.Views = {};
var initialized = false;
2014-08-06 14:09:01 +00:00
2014-08-10 17:06:58 +00:00
Metamaps.Views.init = function () {
2014-08-06 14:09:01 +00:00
Metamaps.Views.MapCard = Backbone.View.extend({
2014-08-10 17:06:58 +00:00
template: Hogan.compile( $('#mapCardTemplate').html() ),
2014-08-06 14:09:01 +00:00
tagName: "div",
className: "map",
2014-08-10 17:06:58 +00:00
id: function() {
return this.model.id;
},
2014-08-06 14:09:01 +00:00
initialize: function () {
this.listenTo(this.model, "change", this.render);
},
render: function () {
2014-08-10 17:06:58 +00:00
this.$el.html( this.template.render(this.model.attrForCards()) );
return this;
2014-08-06 14:09:01 +00:00
}
});
2014-08-10 17:06:58 +00:00
var mapsWrapper = Backbone.View.extend({
initialize: function (opts) {
},
setCollection: function (collection) {
if (this.collection) this.stopListening(this.collection);
this.collection = collection;
this.listenTo(this.collection, 'successOnFetch', this.handleSuccess);
this.listenTo(this.collection, 'errorOnFetch', this.handleError);
},
render: function () {
2014-08-10 20:20:21 +00:00
2014-08-10 17:06:58 +00:00
var that = this;
2014-08-12 23:20:46 +00:00
this.el.innerHTML = "";
2014-08-10 17:06:58 +00:00
this.collection.each(function (map) {
var view = new Metamaps.Views.MapCard({ model: map });
2014-08-12 23:20:46 +00:00
that.el.appendChild( view.render().el );
2014-08-10 17:06:58 +00:00
});
this.$el.append('<div class="clearfloat"></div>');
2014-08-12 23:20:46 +00:00
var m = Metamaps.Famous.maps.surf;
m.setContent(this.el);
setTimeout(function(){
var height = $(that.el).height() + 32 + 56;
m.setSize([undefined, height]);
}, 100);
if (!initialized) {
2014-08-12 23:20:46 +00:00
m.deploy(m._currTarget);
initialized = true;
setTimeout(function(){
var height = $(that.el).height() + 32 + 56;
m.setSize([undefined, height]);
}, 100);
2014-08-12 23:20:46 +00:00
}
2014-08-12 02:31:28 +00:00
Metamaps.Loading.loader.hide();
setTimeout(function(){
var path = Metamaps.currentSection == "" ? "" : "/explore/" + Metamaps.currentPage;
Metamaps.Router.navigate(path);
}, 500);
2014-08-10 17:06:58 +00:00
},
handleSuccess: function () {
this.render();
},
handleError: function () {
2014-08-12 02:31:28 +00:00
console.log('error loading maps!'); //TODO
2014-08-10 17:06:58 +00:00
}
});
Metamaps.Views.exploreMaps = new mapsWrapper();
};
2014-08-06 14:09:01 +00:00
})();