mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-31 22:54:11 +00:00
update activity page
This commit is contained in:
102
static/scripts/app/views/activities.js
Normal file
102
static/scripts/app/views/activities.js
Normal file
@@ -0,0 +1,102 @@
|
||||
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;
|
||||
});
|
Reference in New Issue
Block a user