1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-06-28 16:08:25 +00:00
seahub/static/scripts/app/views/activities.js
Daniel Pan 45a7ba13e7 Restructure views
Conflicts:
	seahub/templates/libraries.html
	static/scripts/app/router.js
	static/scripts/app/views/group.js
	static/scripts/app/views/organization.js
2016-04-01 10:39:11 +08:00

115 lines
3.4 KiB
JavaScript

define([
'jquery',
'underscore',
'backbone',
'common',
'app/collections/activities',
'app/views/activity-item'
], function($, _, Backbone, Common, ActivityCollection, ActivityItemView) {
'use strict';
var ActivitiesView = Backbone.View.extend({
id: 'activities',
template: _.template($('#activities-tmpl').html()),
activityGroupHdTemplate: _.template($('#activity-group-hd-tmpl').html()),
activityGroupBdTemplate: _.template($('#activity-group-bd-tmpl').html()),
initialize: function () {
this.activities = new ActivityCollection();
this.moreOffset = 0;
this.render();
},
events: {
'click #activities-more': 'getMoreActivities'
},
getMoreActivities: function () {
var _this = this;
this.$loadingTip.show();
this.$activitiesMore.hide();
this.activities.fetch({
remove: false,
data: {'start': _this.moreOffset},
success: function() {
_this.renderActivities();
}
});
},
renderActivities: function () {
var activitiesJson = this.activities.toJSON(),
len = activitiesJson.length,
more = activitiesJson[len-1]['more'],
allActivities = [];
this.$loadingTip.hide();
this.$activitiesMore.hide();
this.moreOffset = activitiesJson[len-1]['more_offset'];
this.$activitiesBody.empty().show();
for (var i = 0; i < len; i++) {
allActivities = allActivities.concat(activitiesJson[i]['events']);
}
// return sth. like {2015-07-27: [{...},], 2015-06-04: [{...}] ...}
var groupedActivities = _.groupBy(allActivities, 'date');
var $groupDate, $groupActivities;
for (var date in groupedActivities) {
$groupDate = $(this.activityGroupHdTemplate({'date': date}));
$groupActivities = $(this.activityGroupBdTemplate());
_.each(groupedActivities[date], function(activity) {
var view = new ActivityItemView(activity);
$groupActivities.append(view.render().el);
});
this.$activitiesBody.append($groupDate).append($groupActivities);
}
if (more) {
this.$activitiesMore.show();
}
},
showActivities: function() {
this.$activitiesBody.hide();
this.$activitiesMore.hide();
this.$loadingTip.show();
var _this = this;
this.activities.fetch({
data: {'start': 0},
success: function() {
_this.renderActivities();
}
});
},
render: function() {
this.$el.html(this.template());
this.$activitiesBody = this.$('#activities-body');
this.$activitiesMore = this.$('#activities-more');
this.$loadingTip = this.$('.loading-tip');
},
show: function() {
$("#right-panel").html(this.$el);
this.showActivities();
},
hide: function () {
this.$el.detach();
}
});
return ActivitiesView;
});