mirror of
https://github.com/haiwen/seahub.git
synced 2025-06-29 16:37:56 +00:00
103 lines
2.8 KiB
JavaScript
103 lines
2.8 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({
|
|
|
|
el: $('#activities'),
|
|
|
|
activityGroupTemplate: _.template($('#activity-group-tmpl').html()),
|
|
|
|
events: {
|
|
'click #activities-more': 'getMoreActivities'
|
|
},
|
|
|
|
initialize: function () {
|
|
this.activities = new ActivityCollection();
|
|
|
|
this.$activitiesBody = this.$('#activities-body');
|
|
this.$activitiesMore = this.$('#activities-more');
|
|
this.$loadingTip = this.$('.loading-tip');
|
|
|
|
this.moreOffset = 0;
|
|
},
|
|
|
|
getMoreActivities: function () {
|
|
var _this = this;
|
|
this.$loadingTip.show();
|
|
this.$activitiesMore.hide();
|
|
this.activities.fetch({
|
|
remove: false,
|
|
data: {'start': _this.moreOffset},
|
|
success: function() {
|
|
_this.render();
|
|
}
|
|
});
|
|
},
|
|
|
|
render: 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']);
|
|
}
|
|
|
|
var groupedActivities = _.groupBy(allActivities, 'date');
|
|
|
|
for (var date in groupedActivities) {
|
|
var $activityGroup = $(this.activityGroupTemplate({'date': date})),
|
|
activityList = groupedActivities[date];
|
|
|
|
this.$activitiesBody.append($activityGroup);
|
|
|
|
_.each(activityList, function (activity) {
|
|
var view = new ActivityItemView(activity);
|
|
$activityGroup.children('ol').append(view.render().el);
|
|
});
|
|
}
|
|
|
|
if (more) {
|
|
this.$activitiesMore.show();
|
|
}
|
|
|
|
},
|
|
|
|
hide: function () {
|
|
this.$el.hide();
|
|
},
|
|
|
|
show: function () {
|
|
this.$el.show();
|
|
this.$activitiesBody.hide();
|
|
this.$activitiesMore.hide();
|
|
this.$loadingTip.show();
|
|
|
|
var _this = this;
|
|
|
|
this.activities.fetch({
|
|
data: {'start': 0},
|
|
success: function() {
|
|
_this.render();
|
|
}
|
|
});
|
|
}
|
|
|
|
});
|
|
|
|
return ActivitiesView;
|
|
});
|